package com.ventasimple.dao;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



import com.ventasimple.modelo.Localidad;
import com.ventasimple.modelo.Provincia;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author Claudio
 */

public class LocalidadDAO extends BaseDAO<Localidad> {

    public Localidad getLocalidad(int id){

        return getObjeto(Localidad.class,id);
    }

    public List<Localidad> getLista() {
        
        return getLista(Localidad.class, true, -1, -1);
    }

    public Localidad getLocalidadByCodigoPostal(String cp) {

        return execQueryObject(Localidad.class,"SELECT l FROM Localidad l WHERE l.codigoPostal = '"+ cp +"'  ORDER BY l.localidad");
    }

    public List<Localidad> getLocalidadByProvincia(Provincia p) {
        
        try {
            return execQueryList("SELECT l FROM Localidad l WHERE l.provincia.codigo = '" + p.getCodigo() + "'  ORDER BY l.nombre");
        } catch (NullPointerException e) {            
            return new ArrayList<Localidad>();
        }
    }

    public List<Localidad> getLocalidadByDescripcion(String query) {
        
       EntityManager em = null;
        String sQuery = "";
        try {
           sQuery = " SELECT l FROM Localidad l "
                   + "WHERE l.nombre LIKE :nombre "
                   + "ORDER BY l.nombre ";                       
                        
           em = getEntityManager();           
           Query q = em.createQuery(sQuery);
           
           q.setParameter("nombre", "%"+query+"%");
           
           q.setMaxResults(10);
           
           return q.getResultList();
       } catch (Exception e) {
           
           Logger.getLogger(PublicacionDAO.class.getName()).log(Level.SEVERE, "getUltimasPublicaciones", e);                   
           return new ArrayList<Localidad>();
           
       }finally {
            if (em != null) {
                em.close();
            }
        }  
    
    }

    public List<Localidad> getLocalidadByProvinciaDescripcion(String query, Provincia p) {
        EntityManager em = null;
        String sQuery = "";
        try {
           sQuery = " SELECT l FROM Localidad l "
                   + "WHERE l.nombre LIKE :nombre "
                   + "AND l.provincia.codigo = :codProvincia ORDER BY l.nombre ";                       
                        
           em = getEntityManager();           
           Query q = em.createQuery(sQuery);
           
           q.setParameter("nombre", "%"+query+"%");
           q.setParameter("codProvincia", p.getCodigo());           
           
           q.setMaxResults(10);
           
           return q.getResultList();
       } catch (Exception e) {
           
           Logger.getLogger(PublicacionDAO.class.getName()).log(Level.SEVERE, "getLocalidadByProvinciaDescripcion", e);                   
           return new ArrayList<Localidad>();
           
       }finally {
            if (em != null) {
                em.close();
            }
        }  
    }
    
}
